package com.nidu.demo.online.api;

import com.alibaba.cola.dto.SingleResponse;
import com.nidu.demo.online.dto.OnlineUserDetailCO;
import com.nidu.demo.online.dto.OnlineUserPageQry;
import com.nidu.demo.online.dto.OnlineUserStatisticsCO;
import com.alibaba.cola.dto.PageResponse;

/**
 * 在线用户服务接口
 * 基于登录日志和OAuth2访问令牌来统计在线用户
 *
 * @author auto
 */
public interface OnlineUserService {

    /**
     * 获取在线用户统计信息
     * 
     * 统计逻辑：
     * 1. 当前在线用户：基于有效的OAuth2访问令牌统计
     * 2. 今日登录用户：查询今天有成功登录记录的用户数
     * 3. 今日新增用户：查询今天创建的用户数
     * 4. 本周活跃用户：查询本周有登录记录的用户数
     * 5. 本月活跃用户：查询本月有登录记录的用户数
     *
     * @return 在线用户统计信息
     */
    SingleResponse<OnlineUserStatisticsCO> getOnlineUserStatistics();

    /**
     * 分页查询在线用户详情
     * 
     * 查询逻辑：
     * 1. 查询所有有效的OAuth2访问令牌
     * 2. 关联用户信息和最近的登录日志
     * 3. 计算在线时长等信息
     *
     * @param qry 分页查询条件
     * @return 在线用户分页结果
     */
    PageResponse<OnlineUserDetailCO> pageOnlineUsers(OnlineUserPageQry qry);

}
